Security has become an increasingly important issue in the field of computing devices as computers have become ubiquitous in our society. It is often desirable to require authentication of users and/or systems in order to protect data, assets, and execution rights, for instance, from unauthorized access. Traditionally, the operating system (OS) environment has provided flexibility in the number and type of cryptographic and authentication devices that are available for security purposes. However, this flexibility of available cryptographic and authentication devices is not matched in the pre-OS environment. In particular, the pre-OS environment in many systems has traditionally employed BIOS firmware, which does not provide a flexible and dynamic infrastructure as all drivers are enclosed as a monolithic binary. A new generation of extensible firmware called Extensible Firmware Interface (EFI), though, now allows extending the firmware with drivers and APIs, thereby providing the possibility of a richer set of services available at pre-boot time. Nonetheless, restraints remain in the pre-OS environment making it difficult for pre-OS applications to take advantage of cryptographic devices and device drivers added to a computer system using EFI firmware.